External Referencing By Portable Program Modules

ABSTRACT

A computer-implemented method includes storing at a computer server indicative data for a first web-accessible document that is not associated with the computer server, receiving a request from a program module in a container document associated with the web-accessible document, and providing, in response to the request, information related to the indicative data.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.11/872,615, filed Oct. 15, 2007, the contents of which are incorporatedby reference.

TECHNICAL FIELD

This document discusses mechanisms and techniques for incorporatinginformation into portable program modules, which may include thegeneration of gadget advertisements using real-time information feeds.

BACKGROUND

Targeted web advertising has become a very successful business forcompanies like Google. Such advertising is a success for much the samereason certain search engines are a success—it brings users informationthat is relevant to them. Advertising is typically provided along withsearch results, often in an area separate from the actual resultsthemselves. In such a situation, the advertisements selected for displaymay be matched to terms in the search request. The Google Adwordsservice is an example of such targeted advertising. Targetedadvertisements may also be delivered apart from search, such as on webpages themselves. For example, an ad system may analyze the content of aweb page to determine important words or concepts to associate with thepage, and may deliver ads directed to those words or concepts when thepage is displayed. Such delivery may occur when the page is retrievedfor a user, with the host of the page delivering the page content andthe ad server delivering the targeted advertising. The Google AdSenseservice is an example of such targeted advertising.

SUMMARY

This document describes mechanisms and techniques that may be employedto provide information from external sources to web-based documents suchas web pages. For example, a web page or a program may act as acontainer document for a portable program module such as a gadget. Thegadget may be programmed to identify information about the containerdocument, to pass such information to an ad server, to receive targetinginformation back from the ad server, and to supply the targetinginformation to a server separate from the ad server. The gadget may thencreate an advertisement for display using information returned from theseparate server. In one example, the gadget may generate an ad that istargeted to a page and includes real-time information from an on-lineauction service such as eBay.

In one implementation, a computer-implemented method is disclosed. Themethod includes storing at a computer server indicative data for a firstweb-accessible document that is not associated with the computer server,receiving a request from a program module in a container documentassociated with the web-accessible document, and providing, in responseto the request, information related to the indicative data. Theweb-accessible document can comprise the container document, and theindicative data can comprise keywords associated with textual content onthe web-accessible document. In some aspects, the information related tothe indicative data includes at least a portion of the indicative data.Also, the information about the web-accessible document can include aURL of the web-accessible document. In addition, the method can alsocomprise analyzing the web-accessible document to determine keywords forthe document.

In another implementation, a computer-implemented method is disclosed.The method comprises obtaining information for identifying a containerdocument with a portable program module located in the containerdocument, submitting the information to a concept server storinginformation about the container document, and receiving in responseinformation associated with the container document, and submitting aquery to an item search server related to the information associatedwith the container document. The method can also comprise receiving inresponse to the query actively updated information about one or moreitems, and generating a display on the container document relating tothe one or more items. In some aspects, the actively updated informationcomprises status information for on-line auctions, and the displaycomprises one or more hyperlinks.

In certain aspects, the method further comprises receiving a selectionof one of the one or more hyperlinks and causing a web page associatedwith the hyperlink to be displayed. Also, hyperlink can include a queryfor the return of content that changes in real time. In addition, thedisplay can comprise a targeted advertisement, and the method canfurther include receiving a selection of one of the one or morehyperlinks and reporting a click event to an advertising server.Moreover, the method can also comprise determining a size of the displayand formatting the information about one or more items to be displayedin the display. The information for identifying a container document cancomprise a URL associated with the container document, and theinformation associated with the container document can include one ormore key words representing concepts in text on the container document.In certain aspects, the method also comprises generating the query froma subset of the one or more key words.

In yet another embodiment, a recordable media is disclosed. The mediahas recorded and stored thereon in tangible form, instructions that,when executed, perform actions comprising obtaining information foridentifying a container document with a portable program module locatedin the container document, submitting the information to a conceptserver storing information about the container document, and receivingin response information associated with the container document, andsubmitting a query to an item search server related to the informationassociated with the container document.

In another embodiment, a computer-implemented system includes aweb-accessible container document for display by a client application,and an advertising portable program module for display on the containerdocument. The advertising portable program module includes computer codeto identify context information of the container document, to submit thecontext information associated with the context information to anadvertising server, to submit advertising keyword information to athird-party server, and to generate an advertisement using informationreturned from the third party server.

The details of one or more embodiments are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1 shows a conceptual diagram of a system and process for deliveringreal time information to a portable program module.

FIGS. 2A-2C are example displays of gadget advertisements that can beproduced by the system and process of FIG. 1.

FIG. 3 is a schematic diagram of an example system for deliveringcontent in real time to portable program modules.

FIG. 4 is a flow chart of a process for generating an embeddedadvertisement exhibiting real time data.

FIG. 5 is a swim lane diagram of a process for generating an embeddedadvertisement exhibiting real time data.

FIG. 6 shows an example layout of a container document that includes anumber of portable program modules.

FIG. 7 is a schematic diagram of an example system for dynamicallygenerating advertisements and other items.

FIG. 8 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

FIGS. 9A and 9B are displays of web pages that include portable programmodules for displaying dynamically generated advertisements.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

FIG. 1 shows a conceptual diagram of a system 100 and process fordelivering real time information to a portable program module. In thepictured example, the system 100 comprises a portable program module 104(such as a web gadget), advertising servers 106, and an item searchsystem 108. In general, these components cooperate to permitadvertisements or other such displays containing real-time or nearreal-time data to be constructed and displayed to a user at run-time. Assuch, a targeted advertisement may be constructed on the fly, and maythus contain information that is currently relevant to the user. In thisexample, that information is status information about one or moreon-line auctions relating to content of a web page.

In addition, in certain implementations, the system 100 may beimplemented with few or no adjustments to existing systems. For example,the portable program module 104 may be programmed to submit standardHTTP requests to the advertising servers 106 and item search system 108using agreed-upon API's that are the same as requests made by othersystems. As such, the functionality described here may be added to asystem without having to update server software or make other similarchanges. In addition, such a system 100 may provide additionalflexibility, where authors and user of portable program modules may havemore control over the manner in which their systems interact withadvertising servers 106 and item search system 108.

Such techniques may, in certain implementations, provide one or moreadvantages. For example, in this example, a page may be able to provideviewers with up-to-date real-time information that may be particularlyrelevant to a user. For example, if the user is simply provided withinformation about an area on an auction site, with a mere indicationthat there might be relevant auctions happening at the site, the userwill be reticent to click through to review the auction because theclicking may be a waste of time. On the other hand, if the user sees anactual product in an auction that will expire soon, and sees its currentprice, the likelihood that the user will click on the ad should go upsubstantially.

The example implementation may have advantages to users, to advertisers,to advertising carriers, and to information providers. Users gainbecause they are provided with information that is more relevant tothem. Advertisers gain because they can drive more viewers to theirgoods. Advertising carriers, such as Google, gain because theadvertisers that they serve gain. And information providers—the ownersof the documents that contain the gadget ads—gain because their viewersgain, and perhaps because they can obtain a share of the advertisingrevenue.

Referring to FIG. 1, a portable program module 104 is shown located in acontainer document 102. The portable program module 104 may include adisplay that is generated from mark-up code that is stored as part of,or referenced from, mark up code that generates the container document102. For example, the mark up code may include various forms of HTMLcode, such as code for generating a gadget on the display. The portableprogram module 104 may be part of an iFrame on a web page that isrepresented by the container document 102. In general, an iFrame is anHTML document that may be embedded in another HTML document, using aniFrame element. The document in which the iFrame is embedded—thecontainer document 102 in this example—may be generated around theiFrame while the iFrame itself is still being generated.

Example HTML code for providing an iFrame in a web page includes thefollowing:

<html>...    <iframe src=“http://makinganiframe.com” height=“100”  width=“200” frameborder=“0” scrolling=“no”>    </iframe> .... </html>

As this code shows, the iFrame element may reference a document to beinserted in the iFrame, dimensions for the iFrame, and whether scrollingshould be allowed inside the iFrame. The document in the iFrame can bereplaced with another document or can be modified or refreshed withoutrefreshing the container document (e.g., the surrounding page), by usingthe “target” attribute of an HTML anchor or by using JavaScript, such asin an AJAX implementation. Similar displays may be generated, forexample, through editing of a document's DOM tree.

The portable program module 104 may communicate with the containerdocument 102, with advertising servers 106, and with the item searchsystem 108. The container document may display a variety of information,and in this case, displays a heading 102 a and body text 102 b. Thecontainer document 102 is also represented by a URL that can be used bythe portable program module 104 and other internet-connected componentsand systems to identify the container document.

The portable program module 104 may in effect perform textual analysisof the container document 102 using the advertising servers 106. Theadvertising servers may be servers that include components that crawlvarious web sites and analyze the content of those web sites. Inparticular, the textual content of web pages may be gathered and a listof terms on the page may be generated and ordered from most common termsto least common terms. This list of terms may then be submitted to anexpert system that has been trained with other terms and that associatesvarious concepts with those terms. From such analysis, particularconcepts associated with the web page may be determined, and suchconcepts may be used (as described further below) by the portableprogram module 104 in queries to obtain additional information fromthird-parties for processing by and display by the portable programmodule 104.

The portable program module 104 may access such information by making aproperly formatted request of the advertising servers 106. This requestmay identify to the advertising servers the information that is neededby providing the ad servers 106 with identifying information for thecontainer document 102, such as the URL for the container document 102.To obtain the URL, the portable program module 104 may use javascript onthe page that executes on the page so that it may get the URL bydocument.location. If the javascript is running inside an ad frame, itcan use a document.referrer to get a URL for the content page. Thejavascript may then create an iframe that requests an ad from anadserver, which may then return a gadget with an appropriate URL filledin. The portable program module 104 may then submit the URL to the adservers 106 by making an HTTP request, such as a request formatted asfollows:

-   -   http://pagead2.googlesyndication.com/pagead/ads?url=slashdot.org&output=xml&num_radlinks=10

The ad servers 106 are configured to receive requests relating toparticular URLs and to provide in response key words that aredescriptive of content associated with the URLs. The ad servers 106 maybe configured simply to perform a look up in response to receiving aURL, or may identify additional data associated with a received URLbefore returning descriptive information. The ad server 106 can look upa crawled copy of the page and conduct a contextual analysis asdescribed above, and depending on the context, keywords or ads asrequired. For geographic information, the servers 106 can look up an IPaddress related to the request in a geographic database.

Upon receiving the descriptive information, the portable program module104 may submit the received information, a subset of the information, orinformation relating to the received information to the item searchsystem (ISS) 108. The item search system 108 may take a variety offorms, but in this example is a server that maintains changing real timeinformation, such as weather, stock price, or auction information. Oneexample of such a system is the eBay auction web site. The item searchsystem 108 may operate so as to receive queries via published, openprotocols, so that a developer of portable program module 104 mayreadily communicate queries via the portable program module 104 usingthe received descriptive information. The item search system 108 maythen respond in a known manner, such as by transmitting XML formattedinformation about activity tracked by the item search system. Forexample, the item search system 108 may provide descriptive informationabout top objects in an auction that is associated with the query passedto it, such as descriptions, photos, current prices, and time toexpiration.

An example flow of operations in system 100 is shown by lettered arrowsin FIG. 1. In this particular example, the container document 102 is aweb page for an on-line shopping site that lists one product for saleeach day, and stops selling anything when that product runs out. Assuch, the operator of the web site may be missing opportunities togenerate revenue in the time—perhaps hours—each day when nothing isavailable from the site. At the same time, the operator may not want tohave to manage other sales, apart from the single product each day.

To assist with this challenge, the operator may include portable programmodule 104 in the container document 102, and may provide code so thatthe portable program module 104 is enabled only after product advertisedon the container document 102 has become exhausted. Until that time,various other information may be displayed in the iFrame for portableprogram module 104, such as real-time discussions by users about theproduct being sold on the page.

When the portable program module 104 is accessed, such as when a user isprovided with mark up code when accessing the container document 102,the code for the container document 102 may first begin to be executed,and the container document 102 displayed. When the processing reachesthe iFrame code for the portable program module 104, code for theportable program module 104 may be accessed and executed. That code mayinclude an element for accessing information about the containerdocument, such as the URL for the container document, and the dimensionsprovided in the container document for the iFrame. Arrow A shows arequest from the portable program module 104 to the container document102 to obtain a certain information about the container document 102.

The portable program module 104 may then may a request, such as in theform of an HTTP request, to the ad servers 106 to obtain additionalinformation about the container from the ad servers 106. Such a requestis shown by Arrow B. The request may include some or all of theinformation obtained from the container document, in either its originalform or in a modified form. For example, the request may include the URLfor the container document. The request may also include otherinformation, such as the IP address of the user, and any otherparameters that the publisher is willing to have passed, such as userdemographics and the like.

The request from the portable program module 104 to the ad servers 106may optionally be encrypted or otherwise protected from tampering. Forexample, a unique protocol may be agreed upon between portable programmodule 104 and ad servers 106 to prevent illegitimate requests forinformation from ad servers 106.

Upon receiving such a request, the ad servers 106 may perform a varietyof operations in generating a response to the request. In the picturedexample, the ad servers 106 are tasked with providing the portableprogram module 104 with information that is descriptive of the containerdocument 102. The ad servers 106 or other servers associated with the adservers 106 may have previously generated such descriptive information,such as by the techniques described above. If such information alreadyexists, the ad servers 106 may simply return it to the portable programmodule 104. If the ad servers 106 do not yet have descriptiveinformation for the container document 102, they may attempt to generatesuch information in real time. For example, they may cause a spidermodule to access the container document 102 to obtain content from thecontainer document 102 (e.g., the text of a web page along with tagsthat may indicate the relative importance of the text, such as headingtags), and may extract keywords from the content. Such keywords may thenbe stored by the ad servers 106 for later use and may also betransmitted back to the portable program module 104.

If the ad servers 106 cannot obtain information that is directlydescriptive of the container document 102, then they may attempt togenerate a best guess for such information. For example, the ad servers106 may obtain keywords for other documents at the same domain as thecontainer document 102. The ad servers 106 may then create keywords thatare, for example, a ranked union of keywords for other documents thatare “near” the address of the container document 102. In one example,documents that are closest to the container document 102 (e.g., those inthe same path) may be given higher weight than more distant documentswhen determining appropriate descriptive information to deliver for thecontainer document 102.

When the descriptive information for the container document 102 isdetermined by the ad servers 106, it may be returned to the portableprogram module 104, as shown by Arrow C. For example, the informationmay be provided in an XML formatted message or other similar messageformat.

Upon receiving the information from the ad servers 106, the portableprogram module 104 may submit the information in a query to the itemsearch system 108, as shown by Arrow D. Such an action may simplyinclude inserting keywords received from the ad servers 106 as argumentsin a query. Such action may also involve additional steps. For example,the portable program module 104 may make a determination that certaininformation received from ad servers 106 will not result in asatisfactory result from the item search system 108. As one example, theportable program module 104 may receive too many keywords for the itemsearch system 108, and may be programmed to remove certain of thekeywords (e.g., the last-received keywords).

The information returned from the ad servers 106 to the portable programmodule 104 may include information in addition to the descriptiveinformation. For example, the ad servers 106 may determine, by analyzingthe descriptive information, that a particular item search system 108,from among many item search systems, may be more appropriate forproviding content to the portable program module 104. As one example,where keywords returned to portable program module 104 relate toconsumer-directed terminology (e.g., DVD, television, collectibles), thead servers 106 may provide a parameter so that the portable programmodule 104 sends a query to a server associated with eBay. On the otherhand, if the key words indicate that the user is likely to be looking ata more industrial document (e.g., steel, billet, CRM, etc.), then theportable program module 104 may be directed to an industrial-focusedauction site. In this manner, the advertisement shown as a result of theprocess may be particularly tailored, and also may be directed to a sitemost likely to give complete and useful results.

In response to a submission by the portable program module 104, the itemsearch system 108 may return results for the query. For example, througha standard API, the item search system 108 may reformat the query forsubmission to a database, such as a database tracking auction status inreal time (which includes near real time). The results, may includelistings of ongoing auctions, like a user would see if they typed therelevant keywords into a home page of an auction site such as eBay. Theitem search system 108 may return a certain number of results (e.g., inresponse to a parameter received from the portable program module 104),such as the top three results (e.g., three closest results or the threeauctions that are about to expire) to the portable program module 104,as shown by Arrow E. The results may be formatted, for example, as anXML message. An example of a message returned from the item searchsystem 108 to the portable program module 104 may take the followingform:

Upon receiving the results from the item search system 108, the portableprogram module 104 may analyze and format the results for display to auser on the web page represented by the container document 102. Forexample, the portable program module 104 may initially determine thesize of its associated iFrame so as to determine how many results it candisplay, and in what format it can display them. For example, if theiFrame is very short, there may no be room for graphics (e.g., photos ofitems in an auction), and the portable program module 104 may decline todisplay the graphics in such a situation.

In addition, the portable program module 104 may determine that theiFrame is too small to display a full description of multiple items, andmay thus choose to concatenate certain descriptions or to display only asubset of fields received from the ISS, such as displaying only a “shortdescription” field for an item. Also, the portable program module 104may choose to display more items than will fit in the iFrame, and mayprovide a scroll control to permit access to items that will notinitially display. The portable program module 104 may perform otherformatting operations also, such as expanding outside of the iFrame toshow more items.

The gathering of information from the container document 102, thesubmission of that information to the ad servers 106, the receipt ofdescriptive information about the container document 102 from the AD,the submission of a query to the ISS, and the receipt and display ofresults from the item search system 108, may all occur, in appropriateimplementations, while the page associated with the container document102 is being loaded. As such, the display created by the portableprogram module 104, such as an actively generated advertisement, may beviewable by a user almost immediately upon accessing and loading theassociated web page.

The portable program module 104 may also be provided with additionalfunctionality for accessing information for display with the web page.For example, calls made by the portable program module 104 may beconditional or iterative. As one example, the portable program module104 may request a limited number of results, and when displaying thoseresults, may display a control by which a user may seek additionalresults. In such a situation, the portable program module 104 may thenrequest the additional results. (The portable program module 104 couldalso obtain all of the results initially and store some of the resultsuntil the user requests them.) The portable program module 104 may alsodetermine, from information received from the ad servers 106, thatmultiple item search systems 108 may be possible sources for anadvertisements. In such a situation, the portable program module 104 maygenerate a display showing a user the various choices of item searchsystem 108, and may then perform a query of a particular item searchsystem 108 upon selection of such an option by the user. It should beappreciated that various functions provided by a language such asJavaScript and JavaFX may also be implemented by the portable programmodule 104, thus enabling a rich array of interactions.

The display produced by portable program module 104 may includemetadata, such as hyperlinks, that permits a user to interact with theresults. For example, text displaying certain items in an on-lineauction may be associated with a hyperlink whose selection causes abrowser displaying container document 102 to be redirected to a pageshowing details about the item (or causes a new pane or new window to beopen to display the item detail screen).

Selection of such a hyperlink may also cause a message to be transmittedto ad servers 106 or a server associated with ad servers 106, so as toreport the user's selection. For example, an advertising system may billadvertisers based on the number of times that users click on aparticular advertisement, and such a message may permit an ad system toproperly bill an advertiser, such a the operator of item search system108. In addition, portable program module 104 may report back theparticular item the user selected within the display, so that moredetailed reporting and billing may occur. As one example involving anon-line auction system, the seller of an item may be billed by the itemsearch system 108 operating the auction if a user clicks on a link forthat item. The item may include an ID number assigned by the ISS, andthe portable program module 104 may pass that ID number to the adservers 106 when a user selects the item. The ad servers 106 may thenprovide the number to the item search system 108 at an appropriate time,such as at a time when the selection is billed to the item search system108. In addition to using such information to pass on advertising coststo its users in a fair and tracked manner, the item search system 108may use such information to help analyze the effectiveness of providingcertain information in a display, among other things.

The requests by the portable program module 104 to the ad servers 106and to the item search system 108 may be cached in certainimplementations. Such caching may permit for increased performance, asthe various requests described above may require relatively extensivesearching and processing, particular when performed in very largenumbers. For example, if a portable program module for an advertisementlike that discussed above is placed on the front page of the www.nyt.comweb site, there may be hundreds of thousands of page loads that wouldeach require complete searching and processing by the ad servers 106 andthe ISS. Caching may allow the search and processing to occur once, withsubsequent requests being served simply by looking them up in the cache.

When such caching occurs, it may be implemented at various levels,including in the browser, at an ISP or corporate server, and at centralinformation providers such as Google. At the browser, when a userreturns to a web page (e.g., when returning to a newspaper's main homepage after reading an article) that is a container for a portableprogram module like that described above, the module code may simplyreturn the information that it obtained the first time the page wasloaded. Caching at an ISP may avoid any need to hit the ad servers 106or the item search system 108 at all after a first user seeksinformation from those sources. And caching at the ad servers 106 anditem search system 108 does involve some load on those systems, butavoids the need to re-query and re-process in manners that could be muchmore expensive than simply looking for information in the cache.

Caching may be controlled to expire by various mechanisms, particularlywhen the data displayed by portable program module 104 is real time datalike weather information and on-line auction information. For example,one may insert a timestamp of appropriate granularity to the GETrequest. In addition, where caching is used or could be used, portableprogram module 104 may be programmed to format items in anticipation ofsuch caching. For example, if an on-line auction system reports timeremaining in auctions as “3 minutes remaining”, the portable programmodule 104 may be programmed to reformat such information into anabsolute, rather than relative time, e.g., “expires at 2:23 pm CT.”

FIGS. 2A-2C are example displays 202-206 of gadget advertisements thatcan be produced by the system and process of FIG. 1. In this particularimplementation, the displays show an ad that has been selected to matchthe context of a page, where for example, the page related to computerperipherals of some sort, so that the selected ad is for HP computerperipherals. The page also could have been directed to a topic such adigital photography, where the various portions of the interactive adsshown in displays 202-206 are also relevant to digital photography. Eachof the displays 202-206 is a display that a user may select to haveshown with the ad, and a user may also make selections of hyperlinks onthe ad to be taken to an HP web site.

Similar displays may be generated as part of an ad simulator program bywhich a user may be provided menu selections to identify a size for anadvertisement along with a target container document to be associatedwith the advertisement. Thus, for example a portable program module cansubmit a particular URL selected by a user to an ad server, and the adserver may have previously analyzed the relevant URL page, such asthrough a crawling process for indexing of the page, such as part of theAdSense process for analyzing and classifying page content. Such ananalysis may have determine that the concept or keyword of “digitalcamera” was the most relevant concept or keyword for that page. As aresult, the ad server may have returned such a keyword to the portableprogram module, and the portable program module may have caused thedisplays shown here to be generated.

In other embodiments, keywords may be submitted to a site such as eBay,which may return at least one digital photograph for the portableprogram module to display with the ad. Text associated with the ad,which may be coded right into the portable program module can emphasizeto the user that the displayed information is real time information forauctions that are currently occurring (or have occurred in the recentpast). Each item displayed for the auctions may also be provided as ahyperlink, so that a user can readily see that the ad is interactive,and that selection of the relevant hyperlink will take them to a detailspage for the corresponding auction.

In this manner, the user can be presented with a display by which theywill know immediately that they can reach a desired auction without anyeffort. Specifically, they will not need to enter additional searchrequests after clicking on an ad and being taken to the eBay web site.As a result, the presentation of an ad shown here may cause the user toreact in a much more positive manner, i.e., to appreciate the ad moreand to be more likely to click on it. As a result, the user may benefitby being directed to information that interests them, the advertisereBay (and its corresponding camera sellers) benefit by drivingadditional traffic to auctions, a syndicator of the advertisement canbenefit by generating ad revenue, and the producer of the containerdocument can benefit by sharing in advertising revenue and having a morepleased user base.

FIG. 3 is a schematic diagram of an example system for deliveringcontent in real time to portable program modules. In general, thecomponents shown in FIG. 3 may take a form similar to those shown inFIG. 1. Additional detail and structure for certain of the components isshown here for additional illustration of the operation of an examplesystem 300.

The system 300 is generally made up of a portable program module 306 ina container document 304, that may access information through a network310 such as the internet, from an ads server 302 and an item database308. The container document 304 may have a number of parametersassociated with it, including its URL 323. The portable program module306 includes code and a resulting display that is embedded in thecontainer document 304, and may include code that is referenced from thecontainer document 304. As described above, the portable program module306 may be implemented to provide a display in an iFrame on a web pageassociated with the container document 304.

The portable program module 306 includes a number of components thatpermit it to obtain information about the container document and toretrieve and display content such as a dynamically generated ad usingsuch information. For example, context requester is a program modulethat communicates with the container document 304, such as bycommunicating with a browser program displaying the container document.The context requester may obtain various parameters that define thecontext of the portable program module 306, such as a URL 323 for thecontainer document 304 and a size of a frame in which the portableprogram module 306 is to be displayed, among other things.

The portable program module 306 also includes a request formatter 326.The request formatter 326 may be used to generate requests for the adsserver 302, such as using context information (e.g., a containerdocument URL) obtained by context requester 324. In addition, therequest formatter may receive responses from the ads server 302, and useinformation in such responses to generate a request or requests to theitem database 308, e.g., a query designed to generate a list of itemsshowing real time information tracked by item database 308, for displayby portable program module 306.

In addition, the portable program module 306 can also include an adgenerator 328. The ad generator receives information such as thatreturned from item database 308, including real time information, andformats the received information for display on a web page associatedwith the container document 304, in manners like those discussed above.

The portable program module 306 can generate various forms of messagesto be communicated to and over the network 310. Message 306 a is amessage, in the form of a request (e.g., HTTP request) to ads server 302including context information relating to the context of the portableprogram module 306 that has been gather by the portable program module306. Message 306 b is a search query, which may be submitted in a formaccording to a standard API to item database (or to a web serverassociated with item database 308).

Item database 308 itself may take a variety of forms consistent with thetechniques described here. In certain implementations, item database 308may track real time, constantly changing information. In suchimplementations, portable program module 306 can be used to gather suchinformation and dynamically generate content such as advertisements, tobe displayed on a web page associated with container document 304. Theitem database may generally be configured to generate messages in theform of search results that are responsive, for example, to searchqueries from the portable program module 306. Other messages may also begenerated and transmitted by item database 308 as appropriate.

Ads server 302 may include a number of components and structures forsupporting the generation of targeted advertisements to viewers ofinternet web pages. The ads may be generated for inclusion on pages ofan organization that operates the ads server 302 (e.g., search resultpages) or may be generated for inclusion through a syndication programon third party web pages. As with the other devices here, the ads server302 may include one or more different computers and/or computer systems;the particular grouping of modules and structures is shown here simplyfor illustrative purposes.

The ads server 302 receives messages from other components at a requestprocessor 318. The request processor 318 may parse and analyze incomingmessages to determine how to respond. For example, an incoming messagemay request a list of certain concepts or keywords associated with aparticular URL, and the request processor 318 may analyze the structureof such a request to determine that certain identifying informationabout a web page associated with the URL should be returned. As such,the request processor 318 may access page content data 316, whichincludes information that correlates particular URL's to concepts orkeywords. The accessing may be through a simple look up that uses theURL as a key.

The page content data may be generated in the first instance by adocument analyzer 314 using a crawler 312 to obtain page information.The crawler may operate through various mechanisms to automatically andperiodically survey information available through network 310. Thedocument analyzer 314 may review information collected by the crawler312, and may determine concepts or keywords for the information usingmechanisms like those discussed above. The document analyzer may alsoobtain URL's for various documents that it analyzes from the crawler312, and may store the URL's and the corresponding concepts or keywordsin page content data 316 for later access by the system. In addition,the crawler 312 and document analyzer 314 may obtain and analyzeinformation in real time, such as where a request is made for a URL fromthe portable program module 306 and a corresponding URL does not yetappear in the page content data 316.

When responses have been generated, they may be returned to a requesterby response formatter 320. The response formatter 320 may, for example,reformat database results received from a query of the page content data316 into one or more XML messages to be returned to the portable programmodule 306. The messages may include, for example, keywords 320 a.Various other services may also be provided by ads server 302, thoughlimited services have been shown here to increase clarity. For example,static ads may be served up by ads server 302 and may be delivered fordisplay on a web page associated with container document 304—without theneed to reference a separate source of real time information like itemdatabase 308. Other services may also be provide, as may be describedmore fully with respect to FIG. 7 below.

FIG. 4 is a flow chart of a process 400 for generating an embeddedadvertisement exhibiting real time data. In general, the process showsactions that may be taken by a portable program module in gathering anddisplaying information to a viewer of a web page. The process broadlyinvolves gathering information from a document, such as a containerdocument, related to the portable program module, submitting thegathered information (or a derivative of the gathered information) to aremote server, receiving information from the remote server in response(e.g., information providing information that is descriptive of therelated document), submitting the received information (or a derivativeof the received information) to another remote server, receivinginformation in return from the other remote server, and displaying thereceived information.

At box 402, the portable program module initially obtains informationabout a “context” of the portable program module and/or a containerdocument for the portable program module. The context may include manydifferent sorts of information, and may include, for example, text of amain heading in the container document, a URL for the containerdocument, a set of links in the container document, etc.

The portable program module then, at box 404, passes the contextinformation to a remote server such as a keyword server. The portableprogram module may first alter or otherwise reformat the contextinformation, such as by adding certain parameters to the information,where the parameters may be used by the remote server to determine whatactions to take with respect to the submitted information. The remoteserver may use the passed information to generate a response, such as byidentifying information that is descriptive of a container document whena URL of a container document is passed to the server. The server maythen pass back such information, such as in the form of keywords, to theportable program module, as shown by box 406.

At box 408, the portable program module sends the keywords to an itemsearch database. The portable program module can analyze the receivedkeywords, and may add to them, alter them, or simply pass them onwithout any change other than perhaps a formatting change (e.g., fromXML to HTTP request that matches an API for the item search database).In addition, the portable program module may make other determinations,such as by selecting an item search database, from multiple suchdatabases, to receive the query. The portable program module may thenwait while the item search database applies the submitted query to itsdata and generates a response. The response may include, for example,one or more items responsive to the query.

At box 410, the portable program module receives the results from theitem search database, and at box 412, it formats and displays the searchresults. The formatting may include eliminating certain of the resultsfor display, and also determining the form or size of the space for theportable program module and arranging information regarding the returneditems so as to fit in the allotted space.

The portable program module may then wait for an action. At box 414, theportable program module receives a control selection, such as by a userclicking on a hyperlink representing an item displayed by the portableprogram module. The selected hyperlink may cause a browser that isdisplaying the portable program module to display to the user a detailpage that is the target of the selected hyperlink. By this process, acentrally located portable program module may coordinate the passing ofinformation needed to gather data for displaying a dynamically renderedadvertisement, and to display such an advertisement for interaction witha user.

FIG. 5 is a swim lane diagram of a process 500 for generating anembedded advertisement exhibiting real time data. In general, theprocess 500 shows an example of interactions between a client device, anads server, and an item server, which may be structures like those shownin FIGS. 1 and 3.

The example process begins at box 502, where a portable module on a webpage on the client requests information about the context of the webpage. The container document or another appropriate structure respondsby providing contextual information (box 504), such as a URL of thedocument. The portable module then submits information relating to thecontext (e.g., the URL) to a remote server such as an ads server (box506).

Upon receipt of the request, the ads server may initially authenticatethe request (box 507), such as to ensure it is not spam. The server thendetermines whether information that is descriptive of the containerdocument is available, e.g., whether keywords or concepts describing thepage content have previously been generated for the document and storedby the server. If such information has been stored, it can simply bereturned to the client (box 514). In addition, if a request for the sameinformation has recently been made, a cache may intercept the requestand answer it, without the need for additional searching on the server(not shown).

If such information for the container document is not available, the adsserver may cause the container document to be crawled by a web crawler(box 510) and then analyzed to generate new keywords in runtime. Ifcrawling and analysis is a success (box 512), the newly generatedkeywords may b returned to the client (box 514). If the crawling and/oranalysis does not generate information that can be returned to theclient, the ads server may obtain substitute information for describingthe container document (box 516). For example, the ads server may gatherkeywords for all documents in the same domain or same path as thecontainer document, and identify a particular keyword or keywords thatare dominant among the gather keywords. When substitute information hasbeen gather, it may be returned to the portable program module asinformation about the container document (box 514).

At box 518, the portable program module edits the received information,such as by selecting certain keywords to pass to the item server, or bysimply reformatting the received information into a request that matchesa format that is acceptable to the item server. At box 520, the clientfinishes reformatting the request and submits it to the item server,which receives the request and returns results corresponding to therequest (box 522). The item server may operate according to the variousprocedures discussed above or according to other appropriate processes.

The client then receives the results at box 524 and filters them orotherwise changes them, such as by are or eliminating certain resultsthat are determined to not display properly with the container document.In making a decision of what results to display, and how to displaythem, the portable program module may check display parameters, such asthe size of an iFrame or similar structure in which the display is tooccur (box 526). The client may then format and display the results (box528), such as is shown in, for example, FIG. 2.

After a time, a user may select one of the results displayed by aportable program module (box 530), which may cause an HTTP request to bedelivered to the ads server (box 522) where the hyperlinks for the itemsare formatted to be directed to the ads server. The ads server may thenredirect the user's client application (e.g., browser) to the itemserver (boxes 532 and 534). By having the item's hyperlink point to theads server, and pointing the browser to the item server by redirectionrather than directly, the process 500 may give the ads server noticethat the item has been clicked on, so that the ads server may bill theadvertiser for the click. In other circumstances, the advertising may bebilled differently, such as by a cost per impression billing technique.

At box 534, the client requests a document relating to the resultreturned by the ads server. The requested document may be a documentgenerally, or may more specifically involve submitted a query to theitem server. The item server may then serve the requested document (box536), which serving may involving querying a database of real timechanging information, and returning matching items from the database.Finally, at box 538, the client displays the document, which may involveformatting XML-based data received from the item server for display on aweb page, such as in a gadget.

FIG. 6 shows an example layout of a container document 600 that includesa number of portable program modules. A number of methods ofincorporation are possible, including the use of the iFrame and inlineHTML techniques. FIG. 6 depicts a plurality of modules including a stockmodule 605, an e-mail module 606, a real-time ad module 608, and admodules 610, 612. Different formats for the various modules may existdepending upon the specifications provided by the creator of the module.Some modules may provide scroll bars, and others may not. Some modulesmay be different sizes or shapes than other modules. In addition, somemodules may offer an opportunity for the user to edit the displaypreferences and/or per-use data associated with the module.

In one implementation, inlined modules may be automatically sized by acontainer document so no scrolling, height or scaling information may beprovided. If a module developer wants the module to have theseproperties in this embodiment, an inlined module may be wrapped with afixed size <DIV> tag and content placed in the tag. The scroll bar,height, and other characteristics may be then specified for the inlinedcontent. One of the attributes allows specifying scaling=“ . . . ” tolet the developer indicate how a module may be scaled up or down fordifferent sizes of placements in the container documents.

One of the functions provided with this example container document 600is the opportunity to add content to the container page throughselecting the add content element 603. Upon selecting the “add content”element 603, the system may offer the user the opportunity tointeractively indicate an additional element to be included in thecontainer page. Various forms of an interface to receive that input maybe provided.

In addition, in adding, editing or deleting modules, it may be desiredto have those activities occur without a refresh of the containerdocument. One illustrative technique for achieving this may involve useof AJAX programming techniques so a module may be added to a containerdocument without a refresh of the container document page (perhaps onlya refresh of the IFRAME in which the new container is presented), or useof AJAX to remove a module without the container document beingrefreshed or when a developer is developing a module, being able tochange modules without the container document in which they arepopulated having to have a page refresh in order to incorporate thechanged module.

FIG. 7 is a schematic diagram of an example system 700 for dynamicallygenerating advertisements and other items. In general, the system 700 isa more general representation of a system that employs portable programmodules, such as gadgets, for various operations. The general operationsdescribed here are, when appropriate, applicable to the systems shown inFIGS. 1 and 3. System 700 may include a host server system 710 with aplurality of modules that may be associated therewith. Such modules maycomprise a container server 712, a module server 714, a specificationserver 716, a back end server 718, an analysis module 728, a modulecreation server 732, a syndication server 734, and an advertisementserver 736. As illustrated, host server system 710 may connect over anetwork 726 to a plurality of other systems or sub-systems.

Other systems connected to the network may comprise one or more usersystems 722, one or more remote item servers 724, one or more moduledeveloper systems 730 and one or more syndication recipient servers 738.In addition, one or more database systems 720 may operate in conjunctionwith the various modules of host server system 710.

Container server 712 may serve container documents to user systems 722over network 726. Container server 712 may use a web server or relatedserver systems that take data and/or instructions and formulatecontainers for transmission over the network to the user system 722.However, that container server 712 may reside on user system 722 aswell, so that a network connection may not be used. In the example inwhich the container document includes a word processing document, forexample, container server 712 may comprise a word processing module.

Module server 714 may provide data from modules to container server 712for incorporation into a container document. In one embodiment,container server 712 and module server 714 may comprise a single unitperforming both functions, as may other servers and modules describedherein. Module server 714 may provide data for the container document byinterpreting and/or parsing instructions in a module specificationassociated with the module. According to one embodiment, module server714 may serve the module content to the container document through theuse of a browser iFrame.

To expedite display of container documents, modules may be displayedinline within the container document. Inline display may be understoodas referring to display with other document elements. One example is adisplay generated from code for HTML in the body according to HTMLstandards. In one embodiment, module server 714 or some other componentmay determine whether the module is deemed trusted prior to including itin the container document due to the risks of various security issues aninline module could create. According to one embodiment, the module mayincorporate an indicium of approval (e.g., digital certificate) issuedby the container module or an entity associated with the containermodule. If the indicium of approval is present, module server 714 mayrender the data from a module for inline presentation in the containerdocument.

Specification server 716 provides a module specification file to moduleserver 714. The module specification may be cached and stored in adatabase accessible to the module server 714 and/or specification server716 or may be retrieved from a location associated with thespecification as detailed later. For example, specification server 716may reside on a remote item server 724. In addition, specificationserver 716 may be connected to module server 714 over a network with themodule specification located at another location on the networkaccessible to specification server 716.

Backend server 718 may be provided for interacting with one or moredatabases (e.g., large or dynamic databases of information). Forexample, for a news module that obtains frequent updates and demands aflow of data, (e.g, from an RSS feed), backend server 718 may format thedata into HTML for the container.

In one specific example, a person may create a module (e.g., a mapsmodule), such as one that uses an application program interface (API) toan existing mapping program to create a module to display a map ofdowntown Mountain View, Calif. The module may include an XMLspecification file or module specification file stored on aspecification server. The specification server may comprise anyappropriate server, including one on a site from which the containerpage is hosted. The user or another person may then include this newmodule on a personalized homepage or another form of web page (containerdocument). The server that serves the container document may operate asthe module server, and the server that generates the mapping datathrough an inquiry from its API may be considered to be the backendserver.

In one implementation, analysis module 728 may analyze modules atvarious times (e.g., when the module is first selected by a user, eachtime the module is called by a container for inclusion or at any othertime determined to be advantageous for safety and security and othertimes). Analysis module 728 may perform a number of actions, includingcomparing the module with a list of disapproved or dangerous modules ora list of approved modules. The comparison may involve exact orsubstring (e.g., prefixes, suffixes and regular expressions) matching byname or location (e.g., URL), contents of the specification, contents ofthe location where the specification resides, or information that may beascertainable about the module.

Analysis module 728 may take one or more actions in response to adetermination that the module is disapproved or dangerous, including,for example, silently blocking the request, (i.e. providing a genericerror), blocking the request with an error that explains the reason itwas blocked or redirecting the request to a different modulespecification that has been determined to be safe and related to thedisapproved module (e.g., another module that relates to maps, if thefirst one was a disapproved mapping site or a module that includes thekeyword “basketball” if the disapproved module was a basketball module).For example, through redirection, the URL of the original module may bepassed to the “safe” module. The safe module may then use a proxyserver, as described below, to retrieve the original URL's content.Developers may then replace the error handler to fix small bugs in theoriginal module to be able to display the content of the originalmodule. In another embodiment, analysis module 128 may parse the modulecontent to determine whether it is safe, such as by compiling JavaScriptor other scripts contained in the module to try to identify unsafe orundesired actions the module may perform.

One or more module creation servers 732 may be provided. These serversmay operate as “wizards” to enable module creators to create a modulethrough an interactive process. For example, module creation server 732may provide a series of user interfaces that enable a person creating amodule to provide inputs that are used to automatically generate amodule specification. For example, various module specificationtemplates may be provided with corresponding inputs. Module creationserver 732 may then take inputs supplied by a user, insert them into atemplate, and generate a module specification for the module. A preview,testing, and debugging function may also be offered as part of this“wizards.” This module may be downloadable to a client as well.

A syndication server 734 may prepare data for transmission to one ormore syndication recipient servers 738 related to modules. Syndicationserver 734 may receive a request for a module and/or module content anddeliver that module or content to a syndication recipient server 738over network 726. Syndication server 734 may reside at host serversystem 710 or at another location on the network.

For example, if an operator of a sports web site (an example of asyndication recipient system 738) desires to include an advertisingmodule created by a remote source system, it may do so through a requestto syndication server 734. Syndication server 734 may then cooperatewith module server 714 to generate data for the container document (herethe sports web site page of the syndication recipient system 738). Thatmay involve retrieving the module specification from the remote sourcesystem, supplying preferences received from the syndication recipientserver 738 (e.g., city information for the sports team of a page beingdisplayed) and/or generating data for the container. It is also possiblethat the data may be rendered at syndication recipient server 738 intoits container document in either an IFRAME or inline. Syndication server734 may thus syndicate modules accessible to it. It may do so based onrequests for specific modules or other criteria it determines (e.g.,content matches, keyword matches, monetary values associated withmodules and/or syndication requestors, etc.).

Ad server 736 may provide advertisements associated with modules tocontainers and/or data for creating a display for such modules. Forexample, an advertisement may be incorporated with module data when datais delivered to a container document. Ad server 736 may operate withsyndication server 734 to deliver advertisements to syndicationrecipient servers 738 based on a syndication request for a module. Theadvertisements may be selected by ad server 736 based on a wide varietyof criteria, including, but not limited to, the relationship between thecontent of or information about the container, module, other modules inthe container, syndication recipient server information, monetaryelements/relationships related to any of the foregoing and/orcombinations thereof. Ad server 736 may comprise the Google AdSensesystem, according to one embodiment of the present invention. Ad server736 may manage online advertising by associating two or more conceptsrelated to a module with an advertisement and associating a bid,collectively, with the two or more keywords. In addition, syndicationserver 734 or ad server 736 may respond to requests from syndicatedmodules such as advertising-related modules that send requests forinformation describing container pages associated with the modules.

One or more database systems 720 may be provided that store, in anynumber of appropriate manners, container information, modulespecifications and/or related information, formatting data, per-user andper-module preference data, remote module ID data, remote modulelocation reference data, advertisement data, advertiser data,content/monetary data, syndication recipient data, templates formodules, inputs for modules, lists of trusted and untrusted modules,approval criteria and related information and/or any other informationused by the modules to operate as described herein. While a singledatabase structure is shown, the data may be stored at a number oflocations and in one or more systems.

In one implementation, systems and method are provided to incorporatemodules into a container document. One example of a container documentwould be a personalized home page, such as the Google PersonalizedHomepage currently available to users of the Google services on theInternet. Instead of restricting the types of content that a user isable to include in a container document such as a personalized homepage, one or more embodiments of the present invention enable users toselect modules from sources other than the source of the containerdocument. So, for example, a user may elect to include a module in hisor her personalized Google home page from a source not associated withGoogle.

FIG. 8 shows an example of a computer device 800 and a mobile computerdevice 850 that can be used to implement the techniques described here.Computing device 800 is intended to represent various forms of digitalcomputers, such as laptops, desktops, workstations, personal digitalassistants, servers, blade servers, mainframes, and other appropriatecomputers. Computing device 850 is intended to represent various formsof mobile devices, such as personal digital assistants, cellulartelephones, smartphones, and other similar computing devices. Thecomponents shown here, their connections and relationships, and theirfunctions, are meant to be exemplary only, and are not meant to limitimplementations of the inventions described and/or claimed in thisdocument.

Computing device 800 includes a processor 802, memory 804, a storagedevice 806, a high-speed interface 808 connecting to memory 804 andhigh-speed expansion ports 810, and a low speed interface 812 connectingto low speed bus 814 and storage device 806. Each of the components 802,804, 806, 808, 810, and 812, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 802 can process instructions for executionwithin the computing device 800, including instructions stored in thememory 804 or on the storage device 806 to display graphical informationfor a GUI on an external input/output device, such as display 816coupled to high speed interface 808. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices800 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 804 stores information within the computing device 800. Inone implementation, the memory 804 is a volatile memory unit or units.In another implementation, the memory 804 is a non-volatile memory unitor units. The memory 804 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 806 is capable of providing mass storage for thecomputing device 800. In one implementation, the storage device 806 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 804, the storage device 806,memory on processor 802, or a propagated signal.

The high speed controller 808 manages bandwidth-intensive operations forthe computing device 800, while the low speed controller 812 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 808 iscoupled to memory 804, display 816 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 810, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 812 is coupled to storage device 806 and low-speed expansionport 814. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 800 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 820, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 824. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 822. Alternatively, components from computing device 800 may becombined with other components in a mobile device (not shown), such asdevice 850. Each of such devices may contain one or more of computingdevice 800, 850, and an entire system may be made up of multiplecomputing devices 800, 850 communicating with each other.

Computing device 850 includes a processor 852, memory 864, aninput/output device such as a display 854, a communication interface866, and a transceiver 868, among other components. The device 850 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 850, 852,864, 854, 866, and 868, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 852 can execute instructions within the computing device850, including instructions stored in the memory 864. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 850, such ascontrol of user interfaces, applications run by device 850, and wirelesscommunication by device 850.

Processor 852 may communicate with a user through control interface 858and display interface 856 coupled to a display 854. The display 854 maybe, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display)display or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 856 may compriseappropriate circuitry for driving the display 854 to present graphicaland other information to a user. The control interface 858 may receivecommands from a user and convert them for submission to the processor852. In addition, an external interface 862 may be provide incommunication with processor 852, so as to enable near areacommunication of device 850 with other devices. External interface 862may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 864 stores information within the computing device 850. Thememory 864 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 874 may also be provided andconnected to device 850 through expansion interface 872, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 874 may provide extra storage space fordevice 850, or may also store applications or other information fordevice 850. Specifically, expansion memory 874 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 874may be provide as a security module for device 850, and may beprogrammed with instructions that permit secure use of device 850. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 864, expansionmemory 874, memory on processor 852, or a propagated signal that may bereceived, for example, over transceiver 868 or external interface 862.

Device 850 may communicate wirelessly through communication interface866, which may include digital signal processing circuitry wherenecessary. Communication interface 866 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, container document 102MA2000, orGPRS, among others. Such communication may occur, for example, throughradio-frequency transceiver 868. In addition, short-range communicationmay occur, such as using a Bluetooth, WiFi, or other such transceiver(not shown). In addition, GPS (Global Positioning System) receivermodule 870 may provide additional navigation- and location-relatedwireless data to device 850, which may be used as appropriate byapplications running on device 850.

Device 850 may also communicate audibly using audio codec 860, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 860 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 850. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 850.

The computing device 850 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 880. It may also be implemented as part of asmartphone 882, personal digital assistant, or other similar mobiledevice.

FIGS. 9A and 9B are displays 900, 910 of web pages that include portableprogram modules for displaying dynamically generated advertisements. Thedisplays 900, 910 are provided to show additional mechanisms by whichthe concepts discussed above may be implemented. The description ofadditional implementations should not be taken as an indication that thediscussion is limited to particular techniques or only to the specifictechniques that are shown.

Display 900 shows a web page for an electronics retailer, where one ormore dynamic advertisements are displayed on the page. The display 900includes a web page body 902 where standard information about thecompany's products is displayed, such as a particular product that is onspecial and the like. Several advertisements 904 a-c are shown at thebottom of the display 900. The advertisements 904 a-c may take a varietyof forms, including targeted and non-targeted ads, or static anddynamically-created ads. Advertisement 904 c is a static advertisement,in that in includes content that is selected beforehand by anadvertiser, and it does not change its display from time to time basedon data determined at or near the time of display.

Advertisements 904 a-b are dynamically-created ads, in that certaincontent for the advertisements may be predefined, but other content islocated and generated at or near the time of display. Thedynamically-generated advertisements 904 a-b may depend, for theircontent, on their content and on real time information. For example,advertisement 904 a may be generated busing the text on display 900 todetermine what is being displayed on display 900, and then querying adatabase to obtain information on real time sales associated with suchinformation. For example, analysis of display 900, which may be acontainer document for advertisement 902 a, may show that a portablemusic player is being discussed there, so the portable program modulethat generates advertisement 904 a may query a database that isconstantly being updated with information that the company is trying toclear out, so as to find an iPod sale that is going on, and to generatean advertisement for the iPod sale. In a like manner, advertisement 904b may cause an on-line auction database being operated by theelectronics retailer to be queried and may return results from such aquery.

Display 910 shows, in its body 912, a sample internet music site.Standard controls are provided so that users can browse, select andpurchase music. In addition, two objects 914 a-b are shown at the bottomof display 910 to promote the most popular songs and albums,respectfully, being sold that day on the site relating to the genrebeing displayed in the body 912 of the display 910. In the example,object 914 a, when it is to be displayed, may obtaining contextinformation about the main page, such as a URL, and may pass it to asearch engine. The search engine may note that the particular page is aheavy metal page, and may return “heavy metal” as an argument to theobject 914 a.

The object 914 a may then submit that argument as a query to a database,such as to a database associated with the music store that trackspopularity of songs sold by the store, or to a third party serverseparate from the operator of the music store, to obtain, for example,national top singles information. Each displayed single may be shown asa hyperlink so that selection of the hyperlink causes the user to betaken to a details page for a particular song, where the user maypurchase the song. Similar activity, but with respect to albums, isshown with respect to object 914 b.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ad servers ASICs (application specific integratedcircuits), computer hardware, firmware, software, and/or combinationsthereof. These various implementations can include implementation in oneor more computer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made. For example, variousforms of the flows shown above may be used, with steps re-ordered,added, or removed. Also, although several applications of the contentdelivery systems and methods have been described, it should berecognized that numerous other applications are contemplated. Moreover,although many of the embodiments have been described in relation to realtime, dynamically created advertisements, other content delivery mayalso be provided in other various forms. Accordingly, other embodimentsare within the scope of the following claims.

What is claimed is:
 1. A computer-implemented method, comprising:storing at a computer server indicative data for a first web-accessibledocument that is not associated with the computer server; receiving arequest from a program module in a container document associated withthe web-accessible document; and providing, in response to the request,information related to the indicative data.